package support;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
import javax.vecmath.Vector3d;

/**
 *
 * @author jonas
 */
public class Triangulacao {
    
    public static void main(String args[]){
        
//        Vector3d v1 = new Vector3d(1,1,1);
//        Vector3d d1 = new Vector3d(1.5,2,1);
//        
//        Vector3d v2 = new Vector3d(3,1,1);
//        Vector3d d2 = new Vector3d(2.5, 1.5, 1);
//        
//        Vector3d result = new Vector3d();
//        result.cross(v1, d1);
//        
//        Vector3d result2 = new Vector3d();
//        result2.cross(v2, d2);
//        
//        Vector3d resultFinal = new Vector3d();
//        resultFinal.cross(result, result2);
//        
//        
//        System.out.println(resultFinal.getX() / resultFinal.getZ() + " , " + resultFinal.getY() / resultFinal.getZ() + " , " + resultFinal.getZ() / resultFinal.getZ());
    
        Ponto p1 = new Ponto(-22.803204, -43.369172);
        Ponto p2 = new Ponto(-22.803345, -43.369051);
        
        Ponto resultado = Triangulacao.run(p1, p2, 237.84, 319.14);
        
        System.out.println("X= " + resultado.get_x() + " Y= " + resultado.get_y());

    }
    
    public static Ponto run( Ponto p1, Ponto p2, double a1, double a2 ){
        
        Reta a = new Reta();
        Reta b = new Reta();
        
        a.set_ponto( p1.get_x(), p1.get_y() );
        b.set_ponto( p2.get_x(), p2.get_y() );
        
        a.set_direction(a1);
        b.set_direction(a2);
        
        Vector3d vetorA = new Vector3d();
        Vector3d vetorB = new Vector3d();
        
        Vector3d vetorT = new Vector3d();
        
        // Produto primeiro ponto
        vetorA.cross(new Vector3d(a.get_ponto().get_x(), a.get_ponto().get_y(), 1),
                     new Vector3d(a.get_direction().get_x(), a.get_direction().get_y(), 1));
        // Produto segundo ponto
        vetorB.cross(new Vector3d(b.get_ponto().get_x(), b.get_ponto().get_y(), 1),
                     new Vector3d(b.get_direction().get_x(), b.get_direction().get_y(), 1));        
        
        vetorT.cross(vetorA, vetorB);
        
        vetorT.setX(vetorT.getX() / vetorT.getZ());
        vetorT.setY(vetorT.getY() / vetorT.getZ());
//        vetorT.setZ(1);
        
        return new Ponto(vetorT.getX(), vetorT.getY());
       
    }
      
}
